#ifndef SPHERE3D_H
#define SPHERE3D_H

#include "Surface.h"

namespace RayTracer
{
    class Sphere3D : public Surface
    {
    private:
	float radius;
	float radiusSq;

    public:
	Sphere3D(float radius, Vector3D center, Vector3D direction = Vector3D::Empty());
	~Sphere3D();
	virtual Vector3D Normal (const Vector3D *point) const;
	virtual HitInfo Hit(const Ray3D *ray, float tMin, float tMax) const;
	float GetRadius() const;
	void SetRadius(float value);
	Vector3D GetCenter() const;
	void SetCenter(Vector3D value);
    };
};
#endif
